namespace CSharpPro._1023;

public class Demo3
{
    // 作业1：冒泡排序（对整数数组进行升序排序）
    public void BubbleSort(int[] array)
    {
        if (array == null || array.Length <= 1)
            return; // 空数组或单元素数组无需排序

        int n = array.Length;
        // 外层循环控制需要排序的轮次
        for (int i = 0; i < n - 1; i++)
        {
            // 内层循环控制每轮比较的次数（每轮减少一次比较）
            for (int j = 0; j < n - 1 - i; j++)
            {
                // 若当前元素大于后一个元素，则交换位置
                if (array[j] > array[j + 1])
                {
                    int temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                }
            }
        }
    }

    // 打印数组（辅助方法，用于展示排序结果）
    public void PrintArray(int[] array)
    {
        foreach (int num in array)
        {
            Console.Write(num + " ");
        }
        Console.WriteLine();
    }

    // 作业2：学生类Student
    public class Student
    {
        // 学生属性
        public int Id { get; set; }       // 学号
        public string Name { get; set; }  // 姓名
        public int Age { get; set; }      // 年龄
        public double Score { get; set; } // 成绩

        // 无参构造函数
        public Student() { }

        // 带参构造函数（初始化所有属性）
        public Student(int id, string name, int age, double score)
        {
            Id = id;
            Name = name;
            Age = age;
            Score = score;
        }

        // 展示学生信息的方法
        public void ShowInfo()
        {
            Console.WriteLine($"学号：{Id}，姓名：{Name}，年龄：{Age}，成绩：{Score}");
        }
    }

    // 测试冒泡排序的方法
    public void TestBubbleSort()
    {
        Console.WriteLine("=== 冒泡排序测试 ===");
        int[] numbers = { 5, 2, 9, 1, 5, 6 };
        Console.WriteLine("排序前：");
        PrintArray(numbers);

        BubbleSort(numbers); // 调用冒泡排序

        Console.WriteLine("排序后：");
        PrintArray(numbers);
        Console.WriteLine();
    }

    // 测试学生类的方法
    public void TestStudent()
    {
        Console.WriteLine("=== 学生类测试 ===");
        // 创建学生实例
        Student student1 = new Student(101, "张三", 20, 88.5);
        Student student2 = new Student(102, "李四", 19, 92.0);
        Student student3 = new Student();
        student3.Id = 103;
        student3.Name = "王五";
        student3.Age = 21;
        student3.Score = 76.5;

        // 展示学生信息
        student1.ShowInfo();
        student2.ShowInfo();
        student3.ShowInfo();
    }
}